# build_release.ps1 - 构建单文件可执行（Windows/Linux），并嵌入前端
$ErrorActionPreference = 'Stop'

Write-Host "[1/4] 安装并构建前端" -ForegroundColor Cyan
Push-Location "web"
# 优先使用锁文件安装，若无则常规安装
if (Test-Path package-lock.json) {
  npm ci
} else {
  npm install
}
npm run build
Pop-Location

Write-Host "[2/4] 清理并准备输出目录" -ForegroundColor Cyan
$distDir = Join-Path (Get-Location) "dist"
if (Test-Path $distDir) { Remove-Item $distDir -Recurse -Force }
New-Item -ItemType Directory -Path $distDir | Out-Null

Write-Host "[3/4] 构建可执行文件 (嵌入 web/dist)" -ForegroundColor Cyan
$env:CGO_ENABLED = '0'

# Windows amd64
$env:GOOS = 'windows'
$env:GOARCH = 'amd64'
go build -trimpath -ldflags "-s -w" -o (Join-Path $distDir 'nofx.exe') .

# Linux amd64
$env:GOOS = 'linux'
$env:GOARCH = 'amd64'
go build -trimpath -ldflags "-s -w" -o (Join-Path $distDir 'nofx') .

Write-Host "[4/4] 拷贝示例配置与说明" -ForegroundColor Cyan
Copy-Item "config.json.example" $distDir -ErrorAction SilentlyContinue

# 复制提示词目录到发布包
$promptsSrc = Join-Path (Get-Location) "prompts"
if (Test-Path $promptsSrc) {
  Write-Host "复制提示词模板到发布包" -ForegroundColor Cyan
  Copy-Item $promptsSrc (Join-Path $distDir "prompts") -Recurse -Force
} else {
  Write-Host "提示词目录不存在，跳过复制" -ForegroundColor Yellow
}

# 生成简要使用说明
$readme = @"
使用说明
========

Windows:
- 双击 `nofx.exe` 启动服务
- 在同目录创建并编辑 `config.json`（可以复制 `config.json.example` 为基础）
- 打开浏览器访问 `http://localhost:8080/`

Linux:
- 为二进制增加执行权限：`chmod +x ./nofx`
- 运行：`./nofx`
- 在同目录创建/编辑 `config.json`


注意:
- 可执行文件已内置前端页面；仅需 `config.json` 放在同目录。
- 如需修改端口，在 `config.json` 中设置 `api_server_port`。
- `socks_proxy` 与 `http_proxy` 可在 `config.json` 中按需配置：
  "socks_proxy": "127.0.0.1:10808",
  "http_proxy": "127.0.0.1:10809"
- 如需自定义系统提示词，请在同目录的 `prompts/` 下新增或修改 `.txt` 文件
"@
Set-Content -Path (Join-Path $distDir 'README_RELEASE.txt') -Value $readme -Encoding UTF8

Write-Host "构建完成: $distDir" -ForegroundColor Green